/*
 * @(#)TextMethodsDeutschDVMRP.java	Robert Denda&Didier Gutacker
 */

/** 
 *
 * @author 	Robert Denda&Didier Gutacker
 * @version     1.1, 06.09.97
 * @see TextMethodsDeutsch
 * @see TextMethodsDeutschRIP
 * @see TextMethodsEnglish
 */

public class TextMethodsDeutschDVMRP  extends TextMethodsDeutsch {
  TextMethodsDeutschDVMRP() {
    super();
    appletText = new String( "Multicast Routing Algorithmen" );
    frameTitle = new String( "Simulation von Multicast Routing Algorithmen" );
    infoText = new String( "Simulation von Multicast Routing Algorithmen\n\n" +
			   "Diese Simulation visualisiert und simuliert die verschiedenen\n" + 
			   "Routing Algorithmen wie sie im Rahmen des\n" +
			   "Distance Vector Multicast Routing Protocol (DVMRP) v3\n" +
			   "eingesetzt werden.\n\n" +
                           "(c) 1997 Robert Denda, Universitaet Mannheim, Deutschland\n" );

    helpText1 = new String( "Hilfe fuer DVMRP-Routing-Simulation" );

    helpText2 = new String( "Mit dieser Simulation wird einerseits der Aufbau der\n"
			   +"Leitwegetabellen und andererseits der Multicast-\n"
			   +"Sendevorgang von Datenpaketen in Netzwerk nach den\n"
			   +"DVMRP-Routing-Algorithmuen simuliert\n\n"
                           +"Es folgt die Beschreibung der Bedienungsoberflaeche : \n\n"
			   +"Menue Programm : Neu : Netzwerk aufraeumen\n"
			   +"                 Ende : Schliessen des Fensters\n\n"
			   +"Menue Optionen : Simulationsgeschwindigkeit einstellen\n"
			   +"                 Menuesprache waehlen\n"
			   +"                 Sprachausgaben : Sprachunterstuetzung ein-\n"
                           +"                                  bzw. ausschalten\n"
			   +"                 (Noch nicht implementiert !!!!)\n"
			   +"                 Starte Demo : Demonstrationsmodus waehlen\n\n"
			   +"Menue Hilfe    : About : Ueber diese Simulation\n"
			   +"                 Hilfe : Dieses Fenster\n\n"
			   +"Schalter neuer Rechner    : Rechner einfuegen\n\n"
			   +"Schalter entferne Rechner : gewaehlten Rechner entfernen\n\n"
			   +"Schalter Rechner Info     : Leitwegtabelle des gewaehlten\n"
			   +"                            Rechners anzeigen\n\n"
			   +"Schalter neue Verbindung  : die zwei gewaehlten Rechner\n"
			   +"                            verbinden\n\n"
			   +"Schalter entf. Verbindung : gewaehlte Verbindung entfernen\n\n"
                           +"Schalter Senden starten   : gewaehlten Rechner zum Sender machen\n\n"
			   +"Schalter Senden stoppen   : gewaehlten Sender deaktivieren\n\n"
                           +"Schalter Weiter           : Simulation fortsetzen\n\n"
			   +"Schalter Halt             : Simulation anhalten\n\n");

  
    buttonPanel_sendPruningMessageButtonText = new String( "Sende Prune" );
    buttonPanel_sendGraftingMessageButtonText = new String( "Sende Graft" );
    multicastPacketText = new String( "Multicast Paket" );
    pruningPacketText = new String( "Pruning Meldung" );
    graftingPacketText = new String( "Grafting Meldung" );
    graftingPacketAckText = new String( "Grafting Bestaetigung" );
    demoGreetings = 
      new String( "Willkommen zur Demonstration von\n Multicast Routing Algorithmen.\n\n"
		 +"Diese Demonstration erklaert die Funktionsweise des\n"
		 +"Distance Vector Multicast Routing Protocol (DVMRP) v3\n\n" 
		 + "Zu jedem Zeitpunkt kann frei interagiert und damit\n"
		 + "das Verhalten der Simulation beeinflusst werden\n\n"
		 + "Bitte durch anklicken von 'Okay' die Demonstration starten.\n" );
    demoPart1 =
      new String(   "Halten wir hier einmal kurz an.  Sie haben gerade gesehen wie\n"
		  + "die zwei Router \"Rechner 0\" und \"Router 1\" ueber\n"
		  + "\"Verbindung 0\" miteinander verbunden wurden.  In dem Moment,\n"
		  + "wenn ein Rechner an eine Verbindung angeschlossen wird, infor-\n"
		  + "miert er den jeweilig anderen Rechner ueber seine Existenz.\n"
		  + "Das war das erste (blaue) \"Routing Table Update\" Paket, das\n"
		  + "von jedem Rechner aus ueber die Verbindung gesendet wurde.\n"
		  + "Danach sendet jeder Rechner ein (magenta-farbenes) \"Routing\n"
		  + "Table Request\" Paket, mit dem er den anderen benachrichtigt,\n"
		  + "dass er ueber bestehende Netzwerkverbindungen informiert werden\n"
		  + "moechte.  In dem Moment, wenn ein Rechner ueber eine bessere\n"
		  + "Route zu einem bestimmten anderen Rechner informiert wird,\n"
		  + "aendert er entsprechend die Eintraege in seiner Leitwegtabelle\n"
		  + "und informiert seine Nachbarn darueber mithilfe eines (blauen)\n"
		  + "\"Routing Table Update\" Pakets (in dem bis jetzt gezeigten\n"
		  + "Fall gab es nur einen Nachbarn).\n" 
		  + "Beachten sie, dass die Rechner beim Versenden von (blauen)\n"
		  + "\"Routing Table Update\" Paketen die \"Poison Reverse\"\n"
		  + "Methode einsetzen.  Diese funktioniert so, dass fuer alle Ein-\n"
		  + "traege in der Leitwegtabelle, bei denen die kuerzeste Route ueber\n"
		  + "genau die Verbindung fuehrt, ueber die das \"Routing Table Up-\n"
		  + "date Paket versendet wird, eine Entfernung von \"unendlich\"\n"
		  + "hinzuaddiert.  Diese Methode wird eingesetzt, um das Problem\n"
		  + "des \"counting-to-infinity\" zu umgehen und um das \"Reverse\n"
		  + "Path Broadcasting\" (RPB) zu implementieren.\n\n"
		  + "Nach druecken der \"Okay\"-Taste geht es weiter mit der Demo.\n"
		  + "Die Leitwegtabellen (Routing Tables) der einzelnen Rechner\n"
		  + "erhalten Sie ueber die Taste \"Rechner Info\".\n" );

    demoPart2 =
      new String(   "Betrachten Sie nun, wie sich die Eintraege in der Leitweg-\n"
                  + "tabelle von \"Rechner 1\" aendern, wenn eine neue Verbindung\n"
                  + "angeschlossen wird.  Achten Sie auch auf die Eintraege unter\n"
		  + "\"Weiterleiten an\".  Dort sind die Verbindungen angefuehrt,\n"
		  + "an die der Router bei empfang eines Multicast Pakets des\n"
		  + "zum Eintrag gehoerenden Multicast Senders die Pakete weiter-\n"
		  + "leitet.\n\n"
		  + "Nach dem Druecken der \"Okay\"-Taste geht es weiter mit der Demo.\n" );
    demoPart3 =
      new String(   "Nun wird Rechner 2 beginnen Multicast Pakete zu versenden.\n"
		  + "Sie werden sehen, wie die Pakete nur auf den jeweils\n"
		  + "kuerzesten Pfaden weitergeleitet werden.\n\n" 
		  + "Nach Druecken der \"Okay\"-Taste geht es weiter mit der Demo.\n" );
    demoPart4 =
      new String(   "Als naechstes wird eine weitere Verbindung an \"Rechner 1\"\n"
		  + "angeschlossen und man kann beobachten, wie die Rechner die\n"
		  + "nun aktuelle Netzstruktur ueber \"Routing Table Updates\"\n"
		  + "erlernen und das Weiterleiten von Multicast Paketen ent-\n"
		  + "sprechend anpassen.\n\n"
		  + "Nach Druecken der \"Okay\"-Taste geht es weiter mit der Demo.\n" );
    demoPart5 =
      new String(   "Im folgenden werden die Erweiterungen des RPM (Reverse Path\n"
		  + "Multicasting) gegenueber dem RPB (Reverse Path Broadcasting)\n"
		  + "erlaeutert.  Rechner haben die Moeglichkeit, \"Pruning\"\n"
		  + "Meldungen zu senden, um damit ihrem Vorgaenger im Multicast\n"
		  + "Baum zu signalisieren, dass sie an den Multicast Paketen\n"
		  + "momentan kein Interesse haben.  Der Vorgaenger wird nach\n"
		  + "Empfang der \"Pruning\" Meldung Multicast Pakete nur dann\n"
		  + "weiterleiten, wenn es andere ihm untergeordnete Rechner gibt,\n"
		  + "die an den Multicast Paketen interessiert sind.  Falls das\n"
		  + "nicht der Fall ist und der Vorgaenger selbst kein Interesse an\n"
		  + "den Multicast Paketen hat, sendet er ebenfalls eine \"Pru-\n"
		  + "-ning\" Meldung an seinen Vorgaenger, uswusf.\n"
		  + "Beim Erhalten einer Pruning Meldung wird der Router fuer den\n"
		  + "Rechner, der die Pruning Meldung versendet hat, einen Zeit-\n"
		  + "geber starten, bei dessen Ablauf die Leitung wieder fuer den\n"
		  + "entsprechenden Multicast Datenstrohm reaktiviert wird.  Wenn\n"
		  + "der daran angeschlossene Rechner immer noch nicht an der\n"
		  + "Multicast Sitzung teilnehmen moechte, sendet er erneut eine\n"
		  + "Pruning Meldung.  Diese Vorgaenge werden nun dargestellt.\n\n"
		  + "Nach Druecken der \"Okay\"-Taste geht es weiter mit der Demo.\n" );
    demoPart6 =
      new String(   "Um nun doch wieder Multicast Pakete zu erhalten, gibt es im\n"
		  + "DVMRP die Moeglichkeit, \"Grafting\" Pakete an den jeweiligen\n"
		  + "Vorgaenger zu senden, um diesem die erneute Teilnahme am\n"
		  + "Multicast Strohm kundzutun.  \"Grafting\" Pakete werden bei\n"
		  + "Erhalt bestaetigt.  Im folgenden Teil wird man sehen, wie das\n"
                  + "Wiedereintreten der Rechner 4 und 5 gehandhabt wird.\n\n" 
		  + "Nach Druecken der \"Okay\"-Taste geht es weiter mit der Demo.\n" );
    demoEnd =
      new String(   "Die Demonstration des DVMRP v3 ist nun beendet.  Sie koennen\n"
		  + "jedoch weiterhin das Netz erweitern, umstrukturieren, in-\n"
		  + "spizieren, etc.\n\n" 
		  + "Bitte die \"Okay\"-Taste druecken.\n" );

    receivedPruningPacketText = new String( "empfaengt \"Pruning\" Meldung" );
    receivedGraftingPacketText = new String( "empfaengt \"Grafting\" Meldung" );
    receivedGraftingPacketAckText = new String( "empfaengt Bestaetigung fuer \"Grafting\" Paket" );

  } // TextMethodsDeutschDVMRP.TextMethodsDeutschDVMRP
} // TextMethodsDeutschDVMRP
